home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
misc
/
Hunk.lha
/
Hunk
/
Rexx
/
PatchFile.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1998-02-14
|
2KB
|
59 lines
/* Patch a given binary by a given patch
© 1998 THOR Software. */
PARSE ARG binary patch .
if binary='?' | binary='' then; do
say 'Usage: PatchFile.rexx <binary> <patch>,'
say 'where <binary> is the FULL path of an object module'
say 'and <patch> is the name of a .hop file to apply.'
exit 0
end
if ~exists(binary) then; do
say 'I can'D2C(39)'t find the file "'binary'", please check!'
exit 10
end
if patch='' then;do
say 'A Patch file (.hop file) is required for the operation.'
exit 5
end
if ~show(P,'HUNK.1') then; do
if ~open(.hunklocation,'ENV:Hunk','R') then; do
address command 'RequestFile Drawer="SYS:" NoIcons Title="Please locate the Hunk" >ENV:Hunk'
if ~open(.hunklocation,'ENV:Hunk','R') then; exit
address command 'Copy ENV:Hunk to ENVARC:Hunk'
end
wherehunk=readln(.hunklocation)
close(.hunklocation)
if wherehunk='' then; do
address command 'Delete >NIL: ENV:Hunk ENVARC:Hunk'
exit
end
wherehunk=substr(wherehunk,2,length(wherehunk)-2)
snip=max(lastpos(':', wherehunk),lastpos('/', wherehunk)) +1
filename=substr(wherehunk,snip)
pathname=strip(left(wherehunk, snip-1),'T', '/')
pragma('D',pathname)
address command 'run' filename
end
do i=1 while ~show(P,'HUNK.1') & (i<10)
address command 'Wait 1'
end
if i>9 then; do
say "Can't lauch the Hunk processor."
say "Delete ENV:Hunk, ENVARC:Hunk and try again."
exit
end
address 'HUNK.1'
LOCKGUI
VERIFY off
OPEN binary
ApplyPatch patch
COUNT 'hunks'
do i=0 to hunks-1
StripZeros i
end
SAVE binary
VERIFY on
UNLOCKGUI
WINDOWTOBACK